Network congestion develops when the datapacket traffic being sent or injected exceeds the capacity of the network. Congestion causes the throughput of useful traffic to be reduced because each datapacket holds onto network resources longer, or network resources are wasted by handling datapackets that are later discarded.
A conventional approach to minimizing network congestion uses closed-loop per-flow end-to-end rate control. Congestion feedback is used for updates about network congestion to a source of a traffic flow. A Boolean signal provided to the flow source indicates whether a set of datapackets injected for the flow experienced any network congestion. The source response mechanism adjusts a limit on the rate at which future datapackets of the flow can be injected into the network in response to each congestion feedback signal received for a flow at its source.
The congestion feedback signal may be implicit or explicit. An implicit signal is one detected at the source without support from the network switches. For example, in transport control protocol (TCP), an acknowledgment time-out at the source is used to detect datapacket losses. Such is interpreted as a signal of network congestion, and the reception of an acknowledgment (ACK) datapacket with an appropriate sequence number is interpreted as a signal indicating no congestion. In contrast, an explicit signal is generated by the switches in the network, for example by sending Explicit Congestion Notification (ECN) datapackets to flow end-devices.
Some congestion feedback mechanisms favor signaling only the high flow rate sources. For example, some mechanisms send congestion flags only when a switch datapacket buffer exceeds a certain level of occupancy, and the flows that receive the signals are those corresponding to datapackets present in a high occupancy buffer. If the number of datapackets that a buffer can store is less than the number of flows that use the corresponding link, then only some of the flows sharing the link will have datapackets in the buffer when it reaches the threshold occupancy.
A high rate flow is more likely to have a datapacket in the high occupancy buffer than a lower rate flow, because datapackets of the higher rate flow use the buffer more frequently than those of a lower rate flow. Therefore, when a switch buffer fills, among all the flows sharing the corresponding link, higher rates flows are more likely to receive a congestion flag than lower rate flows. Such bias in congestion signaling is strongest in network with small buffers that can store only a few datapackets, because then, when a buffer becomes highly occupied, the subset of flows represented in the buffer is likely only a small fraction of all the flows that share the corresponding network communication link.
The source response component of congestion control acts at the flow source end-device to control the flow's rate limit in response to signals provided by the congestion feedback mechanism. When a received feedback signal indicates no congestion, the source increases the flow's rate limit. The source receives an ACK datapacket that corresponds to one or more of its prior injected datapackets that experienced no congestion in the network. The increase is based on an increase function, rnew=finc(r), where “r” is the current rate limit, and rnew is the next rate limit setting for the flow. Similarly, on receipt of a congestion flag the source reduces the rate limit based on a decrease function, rnew=fdec(r).
The rate increase and decrease functions should be designed to operate together to enable flows to converge to an operating point that is efficient with high bandwidth utilization, and fair, e.g., approximately equal rates to each flow sharing the same bottleneck link.
In networks that use biased congestion feedback mechanisms, a high rate flow is more likely than any contending lower rate flow to receive a congestion flag each time a buffer becomes highly occupied. In such networks, if an update occurs for each congestion feedback signal, then higher rate flows perform more frequent rate decrease steps than lower rate flows.
It is an object of the present invention to enable the use of source responses that use faster increase responses in asynchronous network environments, leading to increased network utilization while still achieving convergence to efficient and fair operating points.